package com.blobfish.kit;

import cn.hutool.core.lang.Console;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.swjtu.lang.Lang;
import com.swjtu.querier.Querier;
import com.swjtu.trans.AbstractTranslator;
import com.swjtu.trans.impl.*;

import java.util.List;

public class QuerierUtil {

    public static QuerierUtil getInstance() {
        return new QuerierUtil();
    }

    public String querier(String original, int code) {
        // 如果是中文才翻译
        if (StrUtil.isNotBlank(original)) {

            Querier<AbstractTranslator> querierTrans = new Querier<>();
            // 设置参数
            querierTrans.setParams(Lang.ZH, Lang.EN, original);
            String translatorName = "";
            // 向查询器中添加 Google 翻译器
            switch (code%7) {
                case 0:
                    translatorName = "BaiduTranslator";
                    querierTrans.attach(new BaiduTranslator());
                    break;
                case 1:
                    translatorName = "IcibaTranslator";
                    querierTrans.attach(new IcibaTranslator());
                    break;
                case 2:
                    translatorName = "OmiTranslator";
                    querierTrans.attach(new OmiTranslator());
                    break;
                case 3:
                    translatorName = "SogouTranslator";
                    querierTrans.attach(new SogouTranslator());
                    break;
                case 4:
                    translatorName = "TencentTranslator";
                    querierTrans.attach(new TencentTranslator());
                    break;
                case 5:
                    translatorName = "TrycanTranslator";
                    querierTrans.attach(new TrycanTranslator());
                    break;
                case 6:
                    translatorName = "YoudaoTranslator";
                    querierTrans.attach(new YoudaoTranslator());
                    break;
            }
            long start = System.currentTimeMillis();
            List<String> result = querierTrans.execute();
            Console.log("翻译器-{}  翻译耗时{}毫秒;", translatorName, System.currentTimeMillis() - start);
            if (result != null && result.size() > 0) {
                String resultStr = result.get(0);
                resultStr = StrUtil.subBetween(resultStr, "\"");
                return resultStr;
            }
        } else {
            return original;
        }
        return "";
    }
}
